package org.lynn.auc.log;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.Serializable;

/**
 *  encapsulation logger
 *
 * @author gy
 * @date 2017/12/3.
 */
public class LogPrint implements Serializable {

    private static final long serialVersionUID = 1856220140478532795L;
    private transient Logger logPrint;

    /**
     * 构造函数,传入类名称
     * @param className
     */
    public  LogPrint(final String className) {
        logPrint = LoggerFactory.getLogger(this.getClass());
    }

    /**
     * 构造函数，传入类实体
     * @param clazz
     */
    public LogPrint(Class clazz){
        logPrint = LoggerFactory.getLogger(clazz);
    }

    /**
     * 判断是否为debug级别
     * @return
     */
    public Boolean isDebugEnable(){
        return logPrint.isDebugEnabled();
    }

    /**
     * 判断是否为info级别
     * @return
     */
    public Boolean isInfoEnable(){
        return logPrint.isInfoEnabled();
    }

    /**
     * 判断是否为warn级别
     * @return
     */
    public Boolean isWarnEnable(){
        return logPrint.isWarnEnabled();
    }

    /**
     * 判断是否为error级别
     * @return
     */
    public Boolean isErrorEnable(){
        return logPrint.isErrorEnabled();
    }

    /**
     * 判断是否为trace级别
     * @return
     */
    public Boolean isTraceEnable(){
        return logPrint.isTraceEnabled();
    }

    /**
     * 打印trace信息
     * @param message
     */
    public void trace(String message){
        logPrint.trace(message);
    }

    /**
     * 打印trace信息,并带堆栈信息
     * @param message
     * @param t 异常对象参数,将打印该异常对象
     */
    public void trace(String message,Throwable t){
        logPrint.trace(message,t);
    }

    /**
     * 输出debug级别调试信息
     * @param message
     */
    public void debug(String message){
        logPrint.debug(message);
    }

    /**
     * 输出debug级别调试信息
     * @param t 异常对象参数,将打印该异常对象
     * @param message
     */
    public void debug(String message,Throwable t){
        logPrint.debug(message,t);
    }

    /**
     * 输出info级别的调式信息
     * @param message
     */
    public void info(String message){
        logPrint.info(message);
    }

    /**
     * 输出info级别的调式信息
     * @param message
     * @param t
     */
    public void info(String message,Throwable t){
        logPrint.info(message,t);
    }

    /**
     * 输出warn级别的信息
     * @param message
     */
    public void warn(String message){
        logPrint.warn(message);
    }

    /**
     * 输出warn级别的信息,带堆栈
     * @param message
     * @param t
     */
    public void warn(String message,Throwable t){
        logPrint.warn(message,t);
    }

    /**
     * 输出error级别的信息
     * @param message
     */
    public void error(String message){
        logPrint.error(message);
    }

    /**
     * 输出error级别的信息,带堆栈
     * @param t
     * @param message
     */
    public void error(String message,Throwable t){
        logPrint.error(message,t);
    }

}
